package 剑指offer;

public class _14_1剪绳子 {
	/**
	 * 
	 * 设将绳子按照x长度等分为a段，即n = ax，则乘积为x^a。。
	 * 观察以下公式，由于n为常数，因此当x^1/x取最大值时，乘积达到最大值
	 * x^a=x^(n/x)=x^(1/x)n
	 * y=x^1/x的最大值
	 * 即lny=1/x*lnx
	 * y'*1/y=-1/X^2*lnx+1/x^2
	 * y'=1/x^2*(1-lnx)*(x^1/x)
	 * 当y'=0时 1-lnx=0
	 * 即x=e约等于2.7即3
	 * 即每段的长度为3时乘机最大
	 *
	 */
	public static void main(String[] args) {
		System.out.println(cuttingRope(10));	
	}
    public static int cuttingRope(int n) {
    	if(n<=3) return n-1;
    	int a=n/3,b=n%3;
    	if(b==0) return (int) Math.pow(3, a);
    	if(b==1) return (int) Math.pow(3, a-1)*4;
    	return (int) Math.pow(3, a)*2;
    }

}
